package com.hxk.juc;

import java.util.concurrent.atomic.AtomicReference;

/**
 * 在java的juc包下的java.util.concurrent.atomic包中只是对java的一些基本类型提供原子类，
 *  但在我们的现实生产环境中还要对一些其他类型的数据做类似的操作，比如User用户类、Order订单类等
 *  那么我们就可以使用juc atomic包下提供的AtomicReference<>类来实现
 *  本Case是对user对象的一个代码实现案例
 */
public class AtomicReferenceCase {

    public static void main(String[] args) {
        User zh3 = new User("zh3", 20);
        User li4 = new User("li4", 30);
        AtomicReference<User>  ar = new AtomicReference<>(zh3);//注意这里放入的是zh3
        boolean flag = ar.compareAndSet(zh3, li4);//如果原始的值是zh3，那么我将zh3修改为li4
        System.out.println(flag+"\t"+ar.get());
    }
}

class User{

    private String name;

    private int age;

    public User(){};

    public User(String name, int age){
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
